<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const promise = new Promise((resolve, reject) => {
        resolve('222')
        // reject('我失败了')
        // throw new Error('我是内部错误')
      })
      // 如果是promise内部的错误，.then的第二个参数和.catch都可以接收到（但是只在其中一个里面捕获）
      // 如果二者同时存在，优先走进.then的第二个参数去接收
      promise
        .then(
          (res) => {
            // 如果promise内部正常，thend的第一个参数里面有错误
            // 此时catch才可以捕获到then里面的错误，第二个参数是捕获不到的
            throw new Error('我是then里面写的错误')
          },
          (err) => {
            console.log('err', err)
          }
        )
        .catch((err1) => {
          // 实际开发中建议用.catch，因为内部外部的错误都可以捕获到
          console.log('err1', err1)
        })
    </script>
  </body>
</html>
